package designpatterns.template_method;

public abstract class Library {
    // 稳定 模板方法
    public void oprationMethod() {
        step1();

        if(step2()) { // 变化, 子类多态调用
            step3();
        }

        for(int i = 0; i < 4; i++) {
            step4(); // 变化, 子类多态调用
        }

        step5();
    }

    private void step1() { // 稳定
        System.out.println("Do step 1");
    }
    private void step3() { // 稳定
        System.out.println("Do step 3");
    }
    private void step5() { // 稳定
        System.out.println("Do step 5");
    }

    abstract protected boolean step2(); // 变化
    abstract protected void step4(); // 变化
}
